import { setMd5Info, getHeardToken, getHeardXtoken } from '@/api/utils';
export const url: string = 'http://file.wuzhan.art/api/file';
import { getCloud, fileLog } from '@/api/upLoad/index';
import COS from 'cos-js-sdk-v5';

let list = setMd5Info();
// let lists = {};
export const heards: any = {
  Authorization: getHeardToken(),
  'x-access-token': getHeardXtoken(), // 请求头中携带token信息
  'HWRequest-TimeStamp': list.HWRequestTimeStamp,
  HWAppId: list.HWAppId,
  HWAppKey: list.HWAppKey,
  HWAppSecret: list.HWAppSecret,
  // ...lists, 
};
export const uploadUrlEx: string = 'http://api.wuzhan.art/api/showpiece/import';
export const base64ToFile = (base64: any, fileName: any) => {
  // 将base64按照 , 进行分割 将前缀  与后续内容分隔开
  let data = base64.split(',');
  // 利用正则表达式 从前缀中获取图片的类型信息（image/png、image/jpeg、image/webp等）
  let type = data[0].match(/:(.*?);/)[1];
  // 从图片的类型信息中 获取具体的文件格式后缀（png、jpeg、webp）
  let suffix = type.split('/')[1];
  // 使用atob()对base64数据进行解码  结果是一个文件数据流 以字符串的格式输出
  const bstr = window.atob(data[1]);
  // 获取解码结果字符串的长度
  let n = bstr.length;
  // 根据解码结果字符串的长度创建一个等长的整形数字数组
  // 但在创建时 所有元素初始值都为 0
  const u8arr = new Uint8Array(n);
  // 将整形数组的每个元素填充为解码结果字符串对应位置字符的UTF-16 编码单元
  while (n--) {
    // charCodeAt()：获取给定索引处字符对应的 UTF-16 代码单元
    u8arr[n] = bstr.charCodeAt(n);
  }
  // 利用构造函数创建File文件对象
  // new File(bits, name, options)
  const file = new File([u8arr], `${fileName}.${suffix}`, {
    type: type,
  });
  // 将File文件对象返回给方法的调用者
  return file;
};
export const upLoadFn = (file: any, type: any) => {
  let name = file.name.split('.');
  let fomart = name[name.length - 1];
  // console.log(file, '1111');
  return new Promise<void>((resolve, reject) => {
    try {
      // let files = 'image';
      // if (file.type.indexOf('audio/') !== -1) {
      //   files = 'audio';
      // } else if (file.type.indexOf('video/') !== -1) {
      //   files = 'video';
      // } else {
      // }
      //let type = 'common%2Favatar'; //头像 common/avatar 认证 auth 运维平台 portal 展品 exhibit 展览 show 单位 unit

      getCloud(fomart, type).then((res: any) => {
        console.log(res.data);
        const cos = new COS({
          getAuthorization: function (options, callback) {
            callback({
              // SecretId: 'AKIDGVXO6bu45ynQpLiswqeKn2bxD2kPxKTP',
              TmpSecretId: res.data.tmpSecretId,
              TmpSecretKey: res.data.tmpSecretKey,
              XCosSecurityToken: res.data.token,
              StartTime: res.data.startTime,
              ExpiredTime: res.data.expiredTime,
            });
          },

          // SecretId: res.data.tmpSecretId, //'AKIDGVXO6bu45ynQpLiswqeKn2bxD2kPxKTP', //res.data.tmpSecretId, // 身份识别ID
          // SecretKey: res.data.tmpSecretKey, //'nNj0FoBYicNzPMDlKgmmdI3Zsx4LQGrD', //res.data.tmpSecretKey, // 身份秘钥
        });
        cos.putObject(
          {
            Bucket: res.data.bucket /* 存储桶 */,
            Region: res.data.region /* 存储桶所在地域，必须字段 */,
            Key: res.data.fileName /* 文件名 */,
            StorageClass: 'STANDARD', // 上传模式, 标准模式
            Body: file.raw, // 上传文件对象
          },
          (err, data) => {
            console.log(err || data);
            if (data.statusCode === 200) {
              fileLog(res.data.fileName);
              console.log(data.Location);
              //api(""));
              resolve(res.data.fileName);
              //写到这,图片已经可以看到啦
            }
          },
        );
      });
    } catch (err) {
      console.log(err);
      reject(false);
    }
  });
};
let loopUrl = ''; 
if (process.env.NODE_ENV === 'development') {
  // 在开发环境下执行的代码  
  //loopUrl = 'https://wuzhan-1316349889.cos.ap-shanghai.myqcloud.com'; //'http://t-file.jiyi.show';
  loopUrl = 'https://wuzhan-1316349889.cos.ap-shanghai.myqcloud.com';
} else {  
  //loopUrl = 'https://jiyi-1316349889.cos.ap-shanghai.myqcloud.com'; //'//file.jiyi.show';
  loopUrl = 'https://file.jiyi.show';
  // 在其他环境下执行的代码
}
export let urls: string = loopUrl; //正式环境'http://file.jiyi.show';

//判断url是否是完整的链接
export const getLinkUrl = (url?: string, cancatUrl?: string) => {
  if (!url) { 
    return ''; 
  }
  if (url.indexOf('https://') !== -1) {
    return url;    
  } else {
    if (cancatUrl) {
      return urls + url + cancatUrl;
    } else {
      return urls + url;
    }
  }
  //
};
